1. Field
The disclosure relates to a method, system, and article of manufacture for the scheduling of execution units.
2. Background
An execution unit is a generic term for one entity of a collection of concurrently executing entities, where the collection of concurrently executing entities may be processes or threads. A multi-tasking operating system is capable of managing a plurality of execution units that execute concurrently within a computational device in which the multi-tasking operating system is implemented.
An execution unit may be in any one of a number of states. An execution unit may be in a running state when the execution unit is currently making use of a processor, whereas the execution unit may be in a blocked state when the execution unit is waiting for making use of the processor. For example, an execution unit may be in a blocked state when the execution unit needs access to a critical resource, e.g., a semaphore. An execution unit may yield the processor for other execution units after being in a running state for a period of time. Furthermore, an execution unit may be swapped out, i.e., removed from the running state, by the kernel of the operating system, such that the execution unit is no longer in a running state. Additionally, an execution unit may be swapped in by the kernel of the operating system to bring the execution unit into a running state.
Processes and threads may be defined differently in different operating systems. In certain operating systems, a process is a “heavyweight” execution unit with its own address space, where a “heavyweight” execution unit consumes significant resources for execution in comparison to a “lightweight” execution unit, such as a thread that shares an address space with other threads. In certain other operating systems, a thread is a fundamental execution unit. Furthermore, in certain operating system, threads are associated with a process and share the environment of the process.